<?php 
class Messaggi_mod extends CI_Model {
	
	// questa è la funzione che invia i messaggi
	public function __construct(){
		parent::__construct() ; 
	}	
	
	
	// Questa è la funzioen che elimina il messaggio ricevuto
	public function elimina_messaggio_ricevuto($id_messaggio){
		$id_messaggio = (int) mysql_real_escape_string($id_messaggio);
		$query = "Update posta_link_bacheca set cancellato='1' where id='$id_messaggio' ";
		$risu    = mysql_query($query);
		return mysql_affected_rows();
	}
	
	// Questa è la funzioen che elimina il messaggio ricevuto
	public function elimina_messaggio_inviato($id_messaggio){
		$id_messaggio = (int) mysql_real_escape_string($id_messaggio);
		$query = "Update posta_txt set cancellato='1' where id='$id_messaggio' ";
		$risu    = mysql_query($query);
		return mysql_affected_rows();
	}
	
	// E questa è la parte che restituisce l'elenco dei messaggi non letti
	public function div_messaggi_non_letti(){
		$id_bacheca = $this->session->userdata('id_bacheca');
		$query = "SELECT 
			posta_txt.id_bacheca_scrive AS id_scrive , 
			posta_txt.data_invio AS time , 
			posta_txt.titolo AS titolo , 
			posta_txt.testo AS testo , 
			posta_link_bacheca.id AS id_link , 
			posta_txt.id AS id_messaggio ,
			posta_link_bacheca.stato as stato , 
			posta_link_bacheca.cancellato as cancellato 
		FROM 
			posta_link_bacheca , posta_txt 
		WHERE 
			posta_link_bacheca.cancellato='0' AND
			posta_link_bacheca.stato='0' AND 
			posta_link_bacheca.id_bacheca_riceve='{$id_bacheca}' AND
			posta_link_bacheca.id_posta_txt=posta_txt.id 
		ORDER BY posta_txt.data_invio desc";
		$risu = mysql_query($query);
		$arr_return = array();
		$num = mysql_num_rows($risu);
		if($num){
			for($x=0;$x<$num;$x++){
				$arr = mysql_fetch_array($risu);
				$arr_return[$x]['id_scrive'] = $arr['id_scrive'] ;
				$arr_return[$x]['time'] =  $arr['time'] ;
				$arr_return[$x]['titolo'] =  $arr['titolo'] ;
				$arr_return[$x]['testo'] =  $arr['testo'] ;
				$arr_return[$x]['id_link'] =  $arr['id_link'] ;
				$arr_return[$x]['id_messaggio'] =  $arr['id_messaggio'] ;
				$arr_return[$x]['stato'] =  $arr['stato'] ;
				//$arr_return[$x]['cancellato'] =  ;
				
			}
		}
		return $arr_return ;
		
	}
	
	// Questa è la parte che restituisce il totale delle pagine ricevute
	public function tot_pagine_ricevuti(){
		$id_loggato = $this->session->userdata('id_bacheca');
		$query = "SELECT * FROM posta_link_bacheca WHERE id_bacheca_riceve='{$id_loggato}' AND id_bacheca_invia<>'{$id_loggato}' AND cancellato='0' ";
		
		$risu    = mysql_query($query);
		$num   = mysql_num_rows($risu);
		$num_pag = ceil($num / 10);
		return $num_pag ;
	}
	
	// Questa è la parte che restituisce il totale delle pagine ricevute
	public function tot_pagine_inviati(){
		$id_loggato = $this->session->userdata('id_bacheca');
		$query = "select * from posta_txt where id_bacheca_scrive='{$id_loggato}' AND cancellato='0' ";
		
		$risu    = mysql_query($query);
		$num   = mysql_num_rows($risu);
		$num_pag = ceil($num / 10);
		return $num_pag ; 
	}
	
	
	// Questa è al parte che gestisce la risposta
	public function aggiungi_risposta($id_messaggio , $testo_messaggio){
		$id_messaggio       = mysql_real_escape_string($id_messaggio);
		$testo_messaggio  = mysql_real_escape_string($testo_messaggio);
		
		// controllo che il messaggio a cui associo la risposta esiste veramente
		$query = "SELECT * FROM posta_txt WHERE 
			id='$id_messaggio' AND 
			id_messaggio_main='0' ";
		$risu    = mysql_query($query);
		$num   = mysql_num_rows($risu);
		if($num){
			$id_bacheca_scrive = $this->session->userdata('id_bacheca');
			$data_invio = time();
			$query_ins = "INSERT INTO posta_txt (id_bacheca_scrive , id_messaggio_main , data_invio , titolo , testo) 
			VALUES ('$id_bacheca_scrive' , '$id_messaggio' , '$data_invio' , '' , '$testo_messaggio')";
			$risu_ins   = mysql_query($query_ins);
			if($risu_ins) {
			
				// A questo punto deve segnare i link come da leggere altrimenti gli altri non sanno capiscono
				
				/*
				UPDATE 
						posta_link_bacheca 
					SET 
						stato='0' 
					WHERE 
						id_posta_txt='34' AND
						id_bacheca_riceve<>'1'
				*/
				$query_up = "UPDATE 
						posta_link_bacheca 
					SET 
						stato='0' 
					WHERE 
						id_posta_txt='{$id_messaggio}' AND
						id_bacheca_riceve<>'$id_bacheca_scrive'";
				//echo $query_up ;
				$risu_up = mysql_query($query_up);
				return 1 ;
			}else return "Errore al momento dell'inserimento";
		}
		else return "Non esiste un messaggio a cui legare la risposta" ; 
	}
	
	public function elenco_inviati($pag_att){
		$pag_att = (int) mysql_real_escape_string($pag_att);
		$rec_pag = 10 ; 
		if(!$pag_att)$pag_att = 1 ; 
		$partenza = ($pag_att - 1)	* $rec_pag ;
		
		$id_bacheca_log = $this->session->userdata('id_bacheca');
		$query = "SELECT 
			posta_txt.data_invio as time , 
			posta_txt.titolo as titolo , 
			posta_txt.testo as testo , 
			posta_txt.id as id_messaggio , 
			posta_link_bacheca.stato as stato , 
			posta_link_bacheca.id_bacheca_riceve as bacheca_riceve , 
			posta_link_bacheca.cancellato as cancellato 
		FROM 
			posta_link_bacheca , posta_txt  
		WHERE 
			posta_link_bacheca.mittente='0' AND
			posta_link_bacheca.id_bacheca_invia='$id_bacheca_log' AND
			posta_link_bacheca.id_posta_txt = posta_txt.id AND 
			posta_txt.id_messaggio_main='0' AND
			posta_txt.cancellato='0' 
			group by posta_link_bacheca.id_posta_txt
			order by posta_txt.data_invio desc
			limit $partenza , $rec_pag ";
		//echo $query; 
		$risu    = mysql_query($query);
		$num   = mysql_num_rows($risu);
		$arr_return = array();
		if($num){
			for($x=0;$x<$num;$x++){
				$arr = mysql_fetch_array($risu);
				$bacheca_riceve = $arr['bacheca_riceve']; 
				// ora mi devo calcolare l'id_utente
				$query_ut = "select * from pagine where id='{$bacheca_riceve}'";
				$risu_ut    = mysql_query($query_ut);
				$arr_ut     = mysql_fetch_array($risu_ut) ; 
				$id_utente_scrive = $arr_ut['id_utente'] ; 
				$nome_bacheca     = $arr_ut['nome'] ; 
				
				$arr_return[$x]['id_scrive'] = $bacheca_riceve ; 
				$arr_return[$x]['time'] = $arr['time'] ; 
				$arr_return[$x]['titolo'] = $arr['titolo'] ; 
				if(!$arr_return[$x]['titolo']) $arr_return[$x]['titolo'] = "(Nessun Oggetto)";
				$arr_return[$x]['testo'] = $arr['testo'] ; 
				$arr_return[$x]['id_utente'] = $id_utente_scrive ; 
				$arr_return[$x]['nome_bacheca'] = $nome_bacheca ; 
				$arr_return[$x]['id_messaggio'] = $arr['id_messaggio'];
				
				$arr_return[$x]['stato'] = $arr['stato'] ; 
				$arr_return[$x]['cancellato'] = $arr['cancellato'];
			}
		}
		return $arr_return ; 
	}
	
	
	
	
	public function elenco_ricevuti($pag_att){
		$pag_att = mysql_real_escape_string($pag_att);
		$pag_att = (int) $pag_att ; 
		$rec_pag = 10 ; 
		if(!$pag_att)$pag_att = 1 ; 
		$partenza = ($pag_att - 1)	* $rec_pag ;
		 
		$id_bacheca_log = $this->session->userdata('id_bacheca');
		
		$query = "SELECT 
			posta_txt.id_bacheca_scrive AS id_scrive , 
			posta_txt.data_invio AS time , 
			posta_txt.titolo AS titolo , 
			posta_txt.testo AS testo , 
			posta_link_bacheca.id AS id_link , 
			posta_txt.id AS id_messaggio ,
			posta_link_bacheca.stato as stato , 
			posta_link_bacheca.cancellato as cancellato 
		FROM 
			posta_link_bacheca , posta_txt 
		WHERE 
			posta_link_bacheca.cancellato='0' AND
			posta_link_bacheca.destinatario='1' AND
			posta_link_bacheca.id_bacheca_invia<>'{$id_bacheca_log}' AND
			posta_link_bacheca.id_bacheca_riceve='{$id_bacheca_log}' AND
			posta_link_bacheca.id_posta_txt=posta_txt.id 
		ORDER BY posta_txt.data_invio desc
		LIMIT $partenza , $rec_pag ";
		
		//echo $query; 
		$risu    = mysql_query($query);
		$num   = mysql_num_rows($risu);
		$arr_return = array();
		if($num){
			for($x=0;$x<$num;$x++){
				$arr = mysql_fetch_array($risu);
				
				// ora mi devo calcolare l'id_utente
				$query_ut = "select * from pagine where id='{$arr['id_scrive']}'";
				$risu_ut    = mysql_query($query_ut);
				$arr_ut     = mysql_fetch_array($risu_ut) ; 
				$id_utente_scrive = $arr_ut['id_utente'] ; 
				$nome_bacheca     = $arr_ut['nome'] ; 
				
				$arr_return[$x]['id_scrive'] = $arr['id_scrive'] ; 
				$arr_return[$x]['time'] = $arr['time'] ; 
				$arr_return[$x]['titolo'] = $arr['titolo'] ; 
				if(!$arr_return[$x]['titolo']) $arr_return[$x]['titolo'] = "(Nessun Oggetto)";
				$arr_return[$x]['testo'] = $arr['testo'] ; 
				$arr_return[$x]['id_utente'] = $id_utente_scrive ; 
				$arr_return[$x]['nome_bacheca'] = $nome_bacheca ; 
				$arr_return[$x]['id_link'] = $arr['id_link'] ; 
				$arr_return[$x]['id_messaggio'] = $arr['id_messaggio'];
				$arr_return[$x]['stato'] = $arr['stato'] ; 
				$arr_return[$x]['cancellato'] = $arr['cancellato'];
			}
		}
		
		return $arr_return ; 
	}
	
	
	// Questa è la parte che  meostra il singolo messaggio (con tutti i sottomessaggi associati)
	public function messaggio_singolo($id_messaggio){
		
		$arr_return = array();
		$id_bacheca_log = $this->session->userdata('id_bacheca');
		
		// il check per vedere se l'utente può leggere
		$query_check = "SELECT * 
		FROM 
			posta_link_bacheca 
		WHERE 
			id_posta_txt='$id_messaggio' AND 
			id_bacheca_riceve='$id_bacheca_log' ";
		// echo $query_check ;
		$risu_check = mysql_query($query_check);
		$num_check = mysql_num_rows($risu_check);
		if(!$num_check) return $arr_return;
		
		// ora se è il caso l'update sullo stato
		$arr_check = mysql_fetch_array($risu_check);
		$stato_mess = $arr_check['stato'];
		$id_link_check = $arr_check['id'];
		
		// questo è l'update del messaggio che viene impostato a letto
		if(!$stato_mess){
			$query_up_check = "update posta_link_bacheca set stato='1' where id='$id_link_check' and id_bacheca_riceve='$id_bacheca_log'"; 
			$risu_up_check  = mysql_query($query_up_check);
		}
		
		// Ora la raccolta da chi invia e chi riceve
		$query_invia_ric = "SELECT 
			pagine.nome as nome_bacheca_riceve , 
			posta_link_bacheca.id_bacheca_riceve as id_bacheca_riceve, 
			posta_link_bacheca.id_bacheca_invia as id_bacheca_invia
		FROM 
			posta_link_bacheca, pagine 
		WHERE 
			posta_link_bacheca.id_bacheca_riceve=pagine.id AND
			posta_link_bacheca.id_posta_txt='$id_messaggio' ";
		//echo "$query_invia_ric";
		$risu_invia_ric  = mysql_query($query_invia_ric);
		$num_invia_ric   = mysql_num_rows($risu_invia_ric);
		for($x=0;$x<$num_invia_ric;$x++){
			$arr_invia_ric = mysql_fetch_array($risu_invia_ric);
			$elenco_id_bacheca_invia  = $arr_invia_ric['id_bacheca_invia'];
			$elenco_id_bacheca_riceve = $arr_invia_ric['id_bacheca_riceve'];
			if($elenco_id_bacheca_invia!=$elenco_id_bacheca_riceve){
				$arr_riceve[$x]['id'] = $elenco_id_bacheca_riceve;
				$arr_riceve[$x]['nome'] = $arr_invia_ric['nome_bacheca_riceve'];
			}
			else {
				$nome_invia = $arr_invia_ric['nome_bacheca_riceve'];
				$id_invia   = $elenco_id_bacheca_invia ;
			}
			
		}
		
		$arr_return['elenco_riceve'] = $arr_riceve ;
		$arr_return['id_invia'] = $id_invia ;
		$arr_return['nome_invia'] = $nome_invia ;
		
		
		// poi c'è la raccolta di inviato ricevuto
		$query_check = "select * from posta_link_bacheca where id_posta_txt='$id_messaggio' ";
		$risu_check  = mysql_query($query_check);
		$num_check   = mysql_num_rows($risu_check);
		
		
		// questo è l'elenco messaggi
		$query= "select * from posta_txt where id='$id_messaggio' and id_messaggio_main='0' ";
		$risu   = mysql_query($query); 
		$num   = mysql_num_rows($risu); 
		
		// se il messaggio nel database esiste
		if($num){
			$arr = mysql_fetch_array($risu);
			
			$id_bacheca_scrive = $arr['id_bacheca_scrive'];
			$query_nome_back = "select * from pagine where id='$id_bacheca_scrive' ";
			$risu_nome_back    = mysql_query($query_nome_back);
			$arr_nome_back     = mysql_fetch_array($risu_nome_back);
			$arr_return['elenco'][0]['id_messaggio'] = $id_messaggio ;  
			$arr_return['elenco'][0]['id_bacheca_scrive'] = 	$id_bacheca_scrive ;  
			$arr_return['elenco'][0]['nome_bacheca_scrive'] 	= $arr_nome_back['nome'];
			$arr_return['elenco'][0]['id_utente_scrive'] 			= $arr_nome_back['id_utente'];
			$arr_return['elenco'][0]['id_bacheca_scrive'] = 	$arr['id_bacheca_scrive'] ;  
			$arr_return['elenco'][0]['id_messaggio_main'] = 	0 ;  
			$arr_return['elenco'][0]['data_invio'] = $arr['data_invio'] ;  
			$arr_return['elenco'][0]['titolo'] = $arr['titolo'] ;  
			$arr_return['elenco'][0]['testo'] = $arr['testo'] ;  
			
			// ora devo prendere i messaggi collegati
			$query_sub = "select * from posta_txt where id_messaggio_main='$id_messaggio' order by data_invio";
			$risu_sub    = mysql_query($query_sub);
			$num_sub   = mysql_num_rows($risu_sub);
			if($num_sub){
				for($x=1;$x<=$num_sub;$x++) { 
					$arr_sub = mysql_fetch_array($risu_sub) ; 
					
					$id_bacheca_scrive = $arr_sub['id_bacheca_scrive'];
					$query_nome_back = "select * from pagine where id='$id_bacheca_scrive' ";
					$risu_nome_back    = mysql_query($query_nome_back);
					$arr_nome_back     = mysql_fetch_array($risu_nome_back);
					
					$arr_return['elenco'][$x]['id_bacheca_scrive'] = 	 $id_bacheca_scrive ;  
					$arr_return['elenco'][$x]['nome_bacheca_scrive'] 	= $arr_nome_back['nome'];
					$arr_return['elenco'][$x]['id_utente_scrive'] 				= $arr_nome_back['id_utente'];
					$arr_return['elenco'][$x]['id_messaggio_main'] 		= 	0 ;  
					$arr_return['elenco'][$x]['data_invio'] 	= $arr_sub['data_invio'] ;  
					$arr_return['elenco'][$x]['titolo'] 			= $arr_sub['titolo'] ;  
					$arr_return['elenco'][$x]['testo'] 			= $arr_sub['testo'] ;  
				} 
			}  
		}
		return $arr_return ; 
	}
	
	
	// questa è la parte che scrive il messaggio nel database
	public function registra_messaggio($arr_amici , $titolo_messaggio , $testo_messaggio){
		$titolo_messaggio = mysql_real_escape_string($titolo_messaggio);
		$testo_messaggio  = mysql_real_escape_string($testo_messaggio);
		
		$data_invio = time();
		$id_bacheca_scrive = $this->session->userdata('id_bacheca');
		
		// prima creo il record messaggio
		// id messaggio_main viene riempito solo nel caso in cui è una risposta ad un messaggio principale
		$query = "insert into posta_txt (id_bacheca_scrive , id_messaggio_main , data_invio , titolo , testo )
		values 
		('$id_bacheca_scrive' , '0' , '$data_invio' , '$titolo_messaggio' , '$testo_messaggio')";
		$risu  = mysql_query($query);
		if(!$risu) return "Errore al momento dell'inserimento";
		
		$id_messaggio_inserito = mysql_insert_id();
		
		// anche il mittente ha un suo record sulla lista dei link
		// ed il record ha la dicitura mittente e la bacheca che invia è se stesso 
		// ed id bacheca riceve è null
		// questo servirà poi a trovare i messaggi inviati
		$query_link_mittente = "insert into posta_link_bacheca (id_posta_txt , id_bacheca_riceve , id_bacheca_invia , mittente , destinatario ,  stato ) 
			VALUES ('$id_messaggio_inserito' , '{$id_bacheca_scrive}' , '{$id_bacheca_scrive}' , '1' , '0' ,  '1' )";
		$risu_link_mittente = mysql_query($query_link_mittente);
		
		
		foreach($arr_amici as $key => $value){
			$query_2 = "insert into posta_link_bacheca (id_posta_txt , id_bacheca_riceve , id_bacheca_invia , mittente , destinatario ,  stato ) 
			VALUES ('$id_messaggio_inserito' , '{$value}' , '{$id_bacheca_scrive}' , '0' , '1' ,  '0' )";
			$risu_2 = mysql_query($query_2);
			if(!$risu_2) return "Errore al momento dell'inserimento dei link.";
		}
		return $id_messaggio_inserito ; 
	}
	
}
?>
